home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
C64
/
T-TPUG Old Monthly Disks
/
(c)t3.d64
/
mail.c
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2007-02-04
|
8KB
|
333 lines
1 REM *****************
2 REM * MAIL.64 SUBMITTED BY
3 REM * AL JOHNSON & DAVE JOHNSON
4 REM * 2446 SOUTHGATE SQ
5 REM * RESTON, VA 22091
6 REM *****************
7 REM * LIST 11000- FOR NOTES ON PROG
8 REM *****************
9 TL=150:RS=9:SUB=1:LL=5
10 DN$=""
11 RX$=""
20 DIM ML$(TL,RS)
30 POKE53281,15:LN=24:RTN$=CHR$(13)
40 GOSUB10700:REM HEADINGS
120 IFN$<>"N"THENGOSUB9000
149 REM##UNDERSCORES
150 GOSUB8000
159 REM##PRINT ADDR
160 GOSUB8100
179 REM##TEST INPUT
180 GETN$:IFN$=""THEN180
190 IFN$<>"E"THEN200
192 GOSUB8200:GOTO149
200 IFN$<>"P"THEN210
205 OPEN4,4:GOSUB8300:CLOSE4
210 IFN$<>"H"THEN213
211 SUB=1:GOTO149
213 IFN$<>"L" THEN 220
214 GOSUB10300:GOTO149
220 IFN$<>"N"THEN260
221 SUB=SUB+1:IFSUB<TLTHEN225:SUB=LN:MSG$="TABLE FULL-SAVE"
222 SUB=LN:MSG$="TABLEFULL-SAVE":GOTO149
225 GOTO149
260 IFN$<>"B"THEN270
265 SUB=SUB-1:IFSUB<1THENSUB=1
266 GOTO149
270 IF N$<>"K" THEN 280
272 GOSUB9400:GOTO149
280 IFN$<>"S"THEN290
285 GOSUB8500:GOTO149
290 IF N$<>"Q"THEN300
293 PRINT"[147]QUITTING NOW":END
300 IFN$<>"U"THEN400
320 GOSUB9100:GOTO149
400 IFN$<>"D"THEN450
420 GOSUB7000:GOTO149
450 IFN$<>"A"THEN470
455 GOSUB7500
469 REM##TEST FOR CONTINUE OF SEARCH
470 IFS1<>1THEN500
472 IFN$="C"THENYX=SRB+1:GOSUB9743
500 GOTO149
7000 REM ###DELETE ENTRY
7020 MSG$="DELETE YOU SURE ??Y"
7030 GOSUB8100:MSG$="D E L E T I N G ":DUB=SUB
7040 GETDE$:IFDE$=""THEN7040
7045 IFDE$<>"Y"THEN7099
7047 GOSUB8100:MSG$=""
7050 FORX=1TORS:ML$(DUB,X)=ML$(DUB+1,X):NEXT
7060 IFDUB=RCTHENRC=RC-1:GOTO7099
7065 DUB=DUB+1:GOTO7050
7099 MSG$="":RETURN
7340 PRINT"[152]ENTER COMMAND SHOWN ON SCREEN[151]"
7500 SUB=RC+1
7520 IF SUB< TL THEN 7550
7540 MSG$="NO ROOM FOR ADD SAVE ":GOTO149
7550 GOSUB8000:GOSUB8100:GOSUB8200:RETURN
8000 REM###PRINT UNDERSCORES
8005 PRINT"[147]"
8010 FORLP=1TO5
8020 PRINT""LP"[164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164]"
8030 NEXTLP
8040 PRINT" PHONE [164][164][164][164][164][164][164][164][164][164][164][164] LBL GRP [164]"
8050 PRINT" XMAS LIST [164] XMAS LBL [164]"
8100 REM###DSPLY ADDRESS
8120 PRINT""
8130 FORLP=1TOLL
8140 PRINT""ML$(SUB,LP)
8142 POKE198,0
8143 NEXTLP
8144 LP=LP-1
8150 PRINT"";LEFT$(DN$,12);LEFT$(RX$,12);ML$(SUB,LP+1)
8155 PRINT"[145]";LEFT$(RX$,35);ML$(SUB,LP+2)
8160 PRINT"";LEFT$(RX$,16);ML$(SUB,LP+3)
8165 PRINT"[145]";LEFT$(RX$,34);ML$(SUB,LP+4)
8193 GOSUB10000
8194 RETURN
8200 REM###READ FROM SCREEN
8210 PRINT""
8220 FORLP=1TO5
8225 W1$=""
8230 PRINT
8231 INPUT"";LIN$
8235 FORX=1TO30
8237 IF MID$(LIN$,X,1)<>"[164]"THEN W1$=W1$+MID$(LIN$,X,1)
8238 IF MID$(LIN$,X,2)="[164][164]" THEN8250
8240 NEXTX
8250 ML$(SUB,LP)=W1$
8255 LIN$=W1$
8260 NEXTLP
8262 IF N$<>"E" THEN RC=RC+1
8264 SL=12
8265 INPUT"";FX$:GOSUB10100:ML$(SUB,6)=FR$
8267 SL=1
8268 PRINT"[145]";LEFT$(RX$,33);:INPUTFX$:GOSUB10100:ML$(SUB,7)=FR$
8272 PRINT"";LEFT$(RX$,14);:INPUTFX$:GOSUB10100: ML$(SUB,8)=FR$
8278 PRINT"[145]";LEFT$(RX$,32);:INPUTFX$:GOSUB10100:ML$(SUB,9)=FR$
8295 RETURN
8300 REM###PRINTENTRY
8330 FORLP=1TOLL
8335 IF LEFT$(ML$(SUB,LP),1)="_"THENPRINT#4,"[160]":GOTO8345
8340 PRINT#4,ML$(SUB,LP)
8345 NEXTLP
8350 PRINT#4,""
8360 RETURN
8500 REM##PUT TO DISK
8508 OPEN15,8,15
8510 OPEN2,8,2,"@0:MAILLIST,S,W":GOSUB9600
8515 PRINT#2,RC
8520 FORPT=1TORC
8525 FORX=1TORS
8527 IFML$(PT,X)="" THEN PRINT#2,"\":GOTO8535
8530 PRINT#2,ML$(PT,X)
8535 NEXTX
8540 NEXTPT
8550 CLOSE2:GOSUB9600:CLOSE15:RETURN
9000 REM##GET FROM DISK
9005 OPEN15,8,15
9006 IF N$="B"THENOPEN3,8,3,"MAIL.FILE.BK,S,R":GOSUB9600:GOTO9013
9010 OPEN3,8,3,"MAILLIST,S,R":GOSUB9600
9013 INPUT#3,RC
9020 FORPT=1TORC
9024 FORX=1TORS
9030 INPUT#3,ML$(PT,X):GOSUB9600
9033 IF LEFT$(ML$(PT,X),1)="\" THEN ML$(PT,X)=""
9036 NEXTX
9040 NEXTPT
9050 CLOSE3:CLOSE15:RETURN
9100 REM##PERFORM LISTAND FIND
9110 LSB=SUB
9120 PRINT"[147]PRINTER OPTIONS"
9123 PRINT"TO CREATE A DIRECTORY":PRINT"PF5[146][151] LIST ALL ENTRIES
9124 [153]"PF3WAITPOKE LIST FROM THIS POINT"
9125 [153]"ENTER PF1WAITPOKE TO DO SEARCH"
9128 [153]"ENTER PF2POKEWAIT FOR XMAS CARD COUNT"
9130 [153]"ENTER PF4WAITPOKE TO RESET XMAS CARDS":[153]"SENT INDICATORS"
9135 [153]"ENTER PF7WAITPOKE TO RETURN"
9140 [161]LI$:[139]LI$[178]""[167]9140
9145 [139] LI$[178][199](137) [167] 9200
9147 [139] LI$[178][199](138) [167] 9300
9150 [139]LI$[178][199](136)[167]9199
9152 [139]LI$[178][199](135)[167]LSB[178]1:[137]9160
9153 [139]LI$[178][199](133)[167][141]9700:[137]9199
9154 [139]LI$[178][199](134)[167]9160
9156 [137]9140
9160 [159]4,4
9163 [139]LSB[177](RC)[167]9198
9164 [139]ML$(LSB,1)[178]""[167]9183
9165 [152]4,[199](15)[199](145):[152]4,""
9168 [152]4,[199](16)"10"ML$(LSB,1)
9172 [129]LP[178]2[164]6
9173 [139] ML$(LSB,LP)[178]"" [167] 9178
9176 [152]4,[199](16)"15"ML$(LSB,LP)
9178 [130]LP
9180 [152]4,[199](16)"15XMAS ";ML$(LSB,8)[199](16)"28MISC LB ";ML$(LSB,7)
9181 [161]K$:[139]K$[178]"C"[167][152]4:[160]4:[142]
9183 LSB[178]LSB[170]1
9185 [139]LSB[179]RC[167]9164
9198 [152]4,[199](15)[199](10):[160]4,4
9199 [142]
9200 CC[178]0
9202 [129] X[178]1[164]RC
9210 [139] ML$(X,8)[178]"Y" [167] CC[178]CC[170]1
9220 [130]X
9230 [153]"";[200](DN$,22);"CHRISTMAS CARDS FOUNDPOKEWAIT ";CC
9240 [153]"PRINT#ENTER A COMMAND SHOWN ON SCREENPOKE"
9250 [137]9140
9300 [129]X[178]1[164]RC
9310 [139] ML$(X,8)[178]"Y"[167]ML$(X,9)[178]"N"
9320 [130]X
9330 [153]"";[200](DN$,22);"CHRISTMAS LABELS RESETPOKEWAIT "
9340 [153]"PRINT#ENTER COMMAND SHOWN ON SCREENPOKE"
9350 [137]9140
9400 [153]"LOADBACK UP MAIL LIST FILE TO SEPARATE":[153]"DISK FILE"
9410 [153]"BACKING UP WILL CAUSE PROGRAM TO"
9420 [153]"QUIT AFTER IT IS COMPLETED"
9430 [153]"IS THIS WHAT YOU WANT"
9440 [161]X$:[139] X$[179][177]"Y"[175]X$[179][177]"N" [167]9440
9450 [139] X$[178]"N" [167] [142]
9460 [153]"LOAD BACKUP DISK AND HIT ANY KEY"
9465 [161] X$:[139] X$[178]"" [167] 9465
9470 [159] 15,8,15,"I":[141]9600:[160]15
9475 [159] 15,8,15:[141]9600
9480 [159] 6,8,6,"@0:MAIL.FILE.BK,S,W"
9485 [152]6,RC
9490 [129] X[178]1[164]RC
9495 [129]Y[178]1[164]RS
9496 [139]ML$(X,Y)[178]"" [167] [152]6,"\":[137]9500
9498 [152]6,ML$(X,Y):[141]9600
9500 [130]Y:[130]X
9510 [160]6:[160]15
9520 [153]"BACKUP COMPLETED"
9525 [153]"YOUR BACKUP DISK IS STILL IS IN THE ":[153]" DRIVE"
9530 [153]"JOB ENDS":[128]
9600 [132]15,EN,EM$
9610 [139] EN[178]0 [167] [142]
9620 [153]"DISK ERROR":[153]EN,EM$:[128]
9700 [143]##SEARCH FOR STRING
9705 S1[178]0:SR$[178]""
9710 [153]"LOADTYPE IN SEARCH STRING"
9713 [133]SR$
9715 [139]SR$[178]""[167]9199
9717 [153]"PRINT#SEARCH POKENPRINT#AME ONLY OR POKEAPRINT#LL ADDR":[133]W3$
9718 [139] W3$[178]"N"[167]L7[178]1:[137]9720
9719 L7[178]6
9720 [153]RTN$"SEARCHING FOR"RTN$""SR$"WAITSTOP"
9725 [153]RTN$"TYPE IN CWAITSTOP TO CANCEL DURING SEARCH"
9730 SRB[178]1:YX[178]1
9741 L[178][195](SR$)
9743 [129]SRB[178]YX[164]RC
9744 [153]"ENTRIES SEARCHED"SRB
9746 [129]X[178]1[164]L7
9748 LT[178][195](ML$(SRB,X))
9749 L5[178]LT[171]L[170]1
9750 [129]CN[178]1[164]L5
9755 [139][202](ML$(SRB,X),CN,L)[178]SR$[167]9790
9756 [161]CN$:[139]CN$[179][177]"C"[167]9758
9757 MSG$[178]"SEARCH CANCELLED":[142]
9758 [130]CN:[130]X:[130]SRB
9765 MSG$[178]"STRING NOT FOUND":[142]
9790 SUB[178]SRB:S1[178]1:MSG$[178]"C TO CONTINUE SEARCH":[142]
10000 [153]"";[200](DN$,17)
10010 [153]" PRINT#ENTRY NUMBERWAITPOKE"SUB"STOP"
10020 [153]" POKEEPRINT#DIT POKEPPRINT#RINT POKENPRINT#EXT POKEBPRINT#ACK POKEHPRINT#OME PRINT#BPOKEKPRINT#UP" "
10030 PRINT" [151]S[152]AVE [151]U[152]TILITY [151]D[152]EL [151]A[152]DD[144]";" [151]L[152]ABEL [151]Q[152]UIT[151]"
10040 IFFR=0THEN10060
10050 PRINT""LEFT$(MSG$,14)FR"[146][144]":GOTO10070
10060 PRINT""MSG$"[146][144]"
10070 MSG$="":FR=0:RETURN
10100 FR$=""
10105 FORX=1TOSL
10110 IF MID$(FX$,X,1)<>"[164]"THENFR$=FR$+MID$(FX$,X,1)
10120 NEXT
10130 FX$=""
10140 RETURN
10300 PRINT"[147]LABEL PROCESSING"
10310 PRINT"[151]C[152]HRISTMAS LABELS"
10320 PRINT"[151]B[152]USINESS LABELS"
10325 PRINT"[151]M[152]ULTIPLE COPIES 1 LABEL"
10330 PRINT"[151]N[152]O LABELS[144]"
10335 PRINT"ENTER C TO STOP LABEL PRINTING[144]"
10340 GETL$:IFL$<>"C"ANDL$<>"B"ANDL$<>"N"ANDL$<>"M"THEN10340
10350 IF L$="N" THEN RETURN
10355 OPEN4,4:SX=SUB
10357 IFL$="M" THEN 10500
10360 IF L$="C" THEN 10460
10370 INPUT"[147]BUSINESS LABEL GROUP";BG$
10380 PRINT"HIT ANY KEY WHEN LABELS ALIGNED"
10390 GETK$:IFK$="" THEN 10390
10400 FORSUB=1TOTL
10405 PRINT"SEARCHING";SUB
10410 IF ML$(SUB,7)=BG$ THEN GOSUB8300
10415 GETK$:IFK$="C"THENPRINT#4:CLOSE4:RETURN
10420 NEXTSUB:CLOSE4:SUB=SX:RETURN
10460 PRINT"[147]CHRISTMAS LABELS"
10470 FORSUB=1TOTL
10475 GETK$:IFK$="C"THENPRINT#4:CLOSE4:SUB=SX:RETURN
10480 IF ML$(SUB,8)="Y"ANDML$(SUB,9)<>"Y"THENGOSUB8300:ML$(SUB,9)="Y"
10490 NEXTSUB:CLOSE4:SUB=SX:RETURN
10500 PRINT"[147]ARE YOU POSITIONED AT DESIRED ADDRESS"
10510 GET K$:IFK$="" THEN 10510
10520 IF K$="N" THEN RETURN
10530 INPUT"HOW MANY LABELS";NL
10540 SZ=SUB:FORX6=1TONL
10550 GETK$:IFK$="C"THENPRINT#4:CLOSE4:SUB=SX:RETURN
10560 GOSUB8300
10570 NEXTX6:SUB=SX:CLOSE4:RETURN
10700 PRINT"[147]";LEFT$(RX$,9);"M A I L L I S T 6 4[144]"
10710 PRINTLEFT$(RX$,16);"B Y"
10720 PRINT"[144]";SPC(10);"DAVE & AL JOHNSON"
10730 PRINT"THIS IS A VERSATILE MAIL LIST"
10740 PRINT"PROGRAM. IT WORKS ONLY WITH DISK"
10750 PRINT"IT PRINTS BUSINESS AND CHRISTMAS"
10760 PRINT"LABELS"
10770 PRINT"ENTER N[146] IF THIS IS FOR A NEW"
10780 PRINT"FILE. ENTER 'B' TO LOAD BACKUP FILE"
10785 PRINT"ENTER ANY OTHER KEY IF THE MAIN FILE"
10790 PRINT"ALREADY EXISTS"
10800 GETN$:IFN$=""THEN10800
10810 RETURN
11000 REM ***************************
11010 REM * USER NOTES ON MAIL.64
11020 REM * THIS PROGRAM WAS ORIGINALLY
11030 REM * WRITTEN FOR A VIC20 BY D.
11040 REM * JOHNSON. WE UPGRADED IT TO
11050 REM * BETTER RUN ON THE C64.
11060 REM *
11070 REM * THE MENU IS RELATIVELY EASY
11080 REM * TO FOLLOW. YOU HAVE A 5
11090 REM * LINE ADDRESS TO ENTER. TO
11100 REM * INDENT INFO (ZIP CODE) USE
11110 REM * SHIFTED SPACES. TO KEEP
11120 REM * ADDRESS INFO FROM PRINTING
11130 REM * ON LABELS, PUT A LEFT ARROW
11140 REM * IN THE FIRST POSITION.
11150 REM * THERE ARE TWO LABEL FIELDS.
11160 REM * THE FIRST IS INTENDED TO BE
11170 REM * BE USED FOR CHRISTMAS CARD
11180 REM * LABELS. PUT IN A 'Y' TO
11190 REM * HAVE THE ADDRESS PRINTED
11200 REM * DURING THE CHRISTMAS LABEL
11210 REM * RUN. THE OTHER FIELD IS
11220 REM * FOR MISC. LABELS. YOU CAN
11230 REM * PUT AN 'A' IN IT AND THEN
11240 REM * PRINT LABELS FOR ALL
11250 REM * ADDRESSES WITH AN 'A'.
11260 REM *
11270 REM * PLAY AROUND WITH THE OTHER
11280 REM * OPTIONS. THEY'RE PRETTY
11290 REM * EASY TO FOLLOW.
11300 REM *
11310 REM * IF YOU LIKE THE PROGRAM OR
11320 REM * MAKE A GOOD MODIFICATION,
11330 REM * I WOULD LIKE TO HEAR FROM
11340 REM * YOU. PLEASE DROP ME A CARD
11350 REM * AT THE ADDRESS AT THE FIRST
11360 REM * PART OF THE PROGRAM.
11370 REM *
11380 REM * -- DELETE THESE NOTES AFTER
11390 REM * READING OR LISTING THEM.
11395 REM * AL JOHNSON
11400 REM ****************************